import systemConfig from './systemConfig'
module.exports = (vm) => {
	// 初始化请求配置
	uni.$u.http.setConfig((config) => {
		config.baseURL = systemConfig.apiUrl;
		config.timeout = 60000;
		return config
	})
	// 请求拦截
	uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
		config.header = {
			'content-type': 'application/json',
			'token': uni.getStorageSync('token') || 'none'
		}
		var param = config.data || config.params;
		// 定时器每隔3秒钟请求打卡是否在范围内
		if(config.url==='/sign/getSignByTaskIdAndUserId'){
			return config;
		}else{
 
			if(uni.getStorageSync('iscontract')==1) {
				 // uni.showLoading({title:'合同上传中...'})
			}else{
				uni.showLoading({
					title: '数据加载中 :)'
				});
				return config;
			}
		}
		
	}, config => { // 可使用async await 做异步操作
		return Promise.reject(config)
	})
	// 响应拦截
	uni.$u.http.interceptors.response.use((response) => {
		/* 对响应成功做点什么 可使用async await 做异步操作*/
		var res = response.data;
		if(uni.getStorageSync('iscontract')==1) {
			 // uni.showLoading({title:'合同上传中...'})
		}else{
			uni.hideLoading();
		}
		if(response.config.url==="/wx/code"||response.config.url==="/wx/inviteCode"){
			return res
		}
		if (res.code == 200) { //正常返回
			return res.result === undefined ? res.data : res.result;
		}  else if (res.code == 502) { //退出登录
			uni.removeStorageSync('token');
			var pages = getCurrentPages();
			let currentRoute = pages[pages.length - 1]
				.route;
			 if(currentRoute === 'pages/login/index'){
				 return;
			 }
			uni.showModal({
				title: '提示:',
				content: '登录失效，去登录?',
				success: (res) => {
					if (res.confirm) {
						uni.removeStorageSync('token');
						uni.navigateTo({
							url: '/pages/login/index'
						})
					} else if (res.cancel) {
						uni.$u.toast('用户取消登录 :)');
				
					}
			
				}
			})
			return false;
		} else if (res.code == 444) { //重复请求
			return new Promise(() => {})
			return false;
		} else {
			// uni.showToast({
			// 	title:res.msg || res.messag,
			// 	icon:'none'
			// })
			console.log("响应拦截",res);
			uni.$u.toast(res.msg || res.message)
			// return new Promise(() => {})
			return false;
		}
	}, (response) => {
		uni.hideLoading();
		var pages = getCurrentPages();
		let currentRoute = pages[pages.length - 1].route;
		let isLogin = uni.getStorageSync('isLogin')
		if(response.statusCode===401){
			//清空保存的token
			uni.removeStorageSync('token');
			uni.removeStorageSync('userName');
			uni.removeStorageSync('userId');
			uni.removeStorageSync('userName');
			uni.removeStorageSync('phoneNum');
			uni.removeStorageSync('password');
			uni.removeStorageSync('nickName');
			uni.removeStorageSync('roleId');
			uni.removeStorageSync('avatar');
			uni.removeStorageSync('loginType');
			uni.removeStorageSync('companyName');
			//这句代码很重要，是为了防止401后再继续调用接口
			uni.setStorageSync('isLogin', 'no')
			uni.setStorageSync('prompt', 'no')
			
			 if(currentRoute === 'pages/login/index'){
				 return;
			 }
			 
			// token过期或者没有登录
			uni.reLaunch({
				url: '/pages/login/index'
			})
			// uni.showModal({
			// 	title: '提示:',
			// 	content: '登录失效，去登录?',
			// 	success: (res) => {
			// 		if (res.confirm) {
			// 			uni.navigateTo({
			// 				url: '/pages/login/index'
			// 			})
			// 		} else if (res.cancel) {
			// 			uni.$u.toast('用户取消登录 :)');
				
			// 		}
			
			// 	}
			// })
			
		}
		// 对响应错误做点什么 （statusCode !== 200）
		if (response.statusCode == 501) {
			var pages = getCurrentPages();
			let currentRoute = pages[pages.length - 1]
				.route;
			 if(currentRoute === 'pages/mine/index'){
				 return;
			 }
			uni.showModal({
				title: '提示:',
				content: '登录失效，去登录?',
				success: (res) => {
					if (res.confirm) {
						uni.removeStorageSync('token');
						uni.reLaunch({
							url: '/pages/login/index'
						})
					} else if (res.cancel) {
						uni.$u.toast('用户取消登录 :)');
				
					}
			
				}
			})


		}
		return false //抛出异常
	})
}